package com.gjt.EventPublish;

import com.gjt.listener.RootEventListener;
import com.gjt.listener.impl.DataOptionListenerImpl;
import org.springframework.util.CollectionUtils;

import java.util.*;

/**
 * 事件发布器
 *
 * @author Guojt
 * @date 2024/10/29 18:54+
 */
public class RootPublisher<T> {
    private volatile Queue<RootEventListener>  listeners = new LinkedList();

    public void addListener(RootEventListener listener) {
        listeners.offer(listener);
    }

    public void removeListener(RootEventListener listener) {
        listeners.remove(listener);
    }

    public void fireEvent(T message) {
        // 检查监听器队列中是否有监听器
        if (CollectionUtils.isEmpty(listeners)) return;




        for (RootEventListener listener : listeners) {
            // 根据不同的事件类型，调用不同的监听器
            if (listener instanceof DataOptionListenerImpl) {
                DataOptionListenerImpl listener1 = (DataOptionListenerImpl) listener;
                listener1.onListener(message);
            }
        }
    }
}
